package student.convert

import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.ObjectMapper
import org.apache.flink.types.Row
import util.Eastmoney.StockData

object JsonParser {
  private val objectMapper = new ObjectMapper()

  // 解析 JSON 字符串到 StockData 样例类的方法
  def parseJsonToStockData(jsonString: String): StockData = {
    try {
      val jsonNode = objectMapper.readTree(jsonString)

      StockData(
        jsonNode.get("index").asInt(),
        jsonNode.get("code").asText(),
        jsonNode.get("name").asText(),
        jsonNode.get("related_links").asText(),
        jsonNode.get("latest_price").asDouble(),
        jsonNode.get("change_percentage").asText(),
        jsonNode.get("change_amount").asDouble(),
        jsonNode.get("volume_hands").asLong(),
        jsonNode.get("turnover_yuan").asText(),
        jsonNode.get("amplitude").asText(),
        jsonNode.get("high").asDouble(),
        jsonNode.get("low").asDouble(),
        jsonNode.get("open_price").asDouble(),
        jsonNode.get("previous_close").asDouble(),
        jsonNode.get("turnover_rate").asText(),
        jsonNode.get("pe_ratio_dynamic").asDouble(),
        jsonNode.get("pb_ratio").asDouble(),
        jsonNode.get("writeTime").asLong(),
        jsonNode.get("updateTime").asLong()
      )
    } catch {
      case e: Exception =>
        println(s"Error parsing JSON: ${e.getMessage}")
        throw e
    }
  }
}